<?php
/*
$array:需要排序的数组
$keys:需要根据某个key排序
$sort:倒叙还是顺序
*/
function arraySort($array,$keys,$sort='asc') {
    $newArr = $valArr = array();
    foreach ($array as $key=>$value) {
        $valArr[$key] = $value[$keys];
    }
    ($sort == 'asc') ?  asort($valArr) : arsort($valArr);//先利用keys对数组排序，目的是把目标数组的key排好序
    reset($valArr); //指针指向数组第一个值
    foreach($valArr as $key=>$value) {
        $newArr[$key] = $array[$key];
    }
    return $newArr;
}

//递归创建目录
function Directory( $dir ){
    return  is_dir ( $dir ) or Directory(dirname( $dir )) and  mkdir ( $dir , 0777);
}

/*压缩多级目录 
    $openFile:目录句柄 
    $zipObj:Zip对象 
    $sourceAbso:源文件夹路径 
*/  
function createZip($openFile,$zipObj,$sourceAbso,$newRelat = '')  
{  
    while(($file = readdir($openFile)) != false)  
    {  
        if($file=="." || $file=="..")  
            continue;  
          
        /*源目录路径(绝对路径)*/  
        $sourceTemp = $sourceAbso.'/'.$file;  
        /*目标目录路径(相对路径)*/  
        $newTemp = $newRelat==''?$file:$newRelat.'/'.$file;  
        if(is_dir($sourceTemp))  
        {  
            //echo '创建'.$newTemp.'文件夹<br/>';  
            $zipObj->addEmptyDir($newTemp);/*这里注意：php只需传递一个文件夹名称路径即可*/  
            createZip(opendir($sourceTemp),$zipObj,$sourceTemp,$newTemp);  
        }  
        if(is_file($sourceTemp))  
        {  
            //echo '创建'.$newTemp.'文件<br/>';  
            $zipObj->addFile($sourceTemp,$newTemp);  
        }  
    }  
}  


/**
 * 删除文件
 */
function delDirAndFile($path, $delDir = FALSE) {
    if (is_array($path)) {
        foreach ($path as $subPath)
            delDirAndFile($subPath, $delDir);
    }
    if (is_dir($path)) {
        $handle = opendir($path);
        if ($handle) {
            while (false !== ( $item = readdir($handle) )) {
                if ($item != "." && $item != "..")
                    is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
            }
            closedir($handle);
            if ($delDir)
                return rmdir($path);
        }
    } else {
        if (file_exists($path)) {
            return unlink($path);
        } else {
            return FALSE;
        }
    }
    clearstatcache();
}
/**
 * 用法：  
 * xCopy("feiy","feiy2",1):拷贝feiy下的文件到 feiy2,包括子目录 
 *  xCopy("feiy","feiy2",0):拷贝feiy下的文件到 feiy2,不包括子目录
 * 参数说明：  
 * $source:源目录名   
 * $destination:目的目录名 
 * $child:复制时，是不是包含的子目录
 * 
 */
function xCopy($source,$destination,$child){
    if(!is_dir($source)){
        return 0;
    }

    if(!is_dir($destination)){
        mkdir($destination,0777);
    }

    $handle = dir($source);

    while($entry = $handle->read()){
        if(($entry != ".") && ($entry != "..")){
            if(is_dir($source."/".$entry)){
                if($child) xCopy($source."/".$entry,$destination."/".$entry,$child);
            }else{
                copy($source."/".$entry,$destination."/".$entry);
            }
        }
    }
}

/**
 * 截取表名
 * @param $input
 * @param $start
 * @param $end
 * @return bool|string
 */
function getNeedBetween($input, $start, $end)
{
    $substr = substr($input, strlen($start)+strpos($input, $start),(strlen($input) - strpos($input, $end))*(-1));
    return $substr;
}

/**
 * 拼接多列 html
 * @param $data
 * @return string
 */
function getArrayAssemble($data){
    $len=count($data)/2;
    for($i=0;$i<$len+2;$i++)
    {
        $html_arr[] = array_slice($data, $i * 2 ,2);
    }
    foreach ($html_arr as $item){
        if(!empty($item)){
            $html_arr_val[] ='<tr>'. implode(' ',$item).'</tr>';
        }

    }
    $html= implode(' ',$html_arr_val);
    return $html;
}

function getTableName(){
    $sql = "show tables";
    $result =  \think\Db::query($sql);
    $table_arr = array_column($result,'Tables_in_'.config("database.database"));
    return $table_arr;
}

